package com.brillilab.service.core.topics;

import com.brillilab.domain.po.topics.TopicExperiment;
import com.brillilab.domain.vo.topics.TopicExperimentVo;

import java.util.List;

public interface ITopicExperimentService {

    List<TopicExperiment> getTopicExperimentList(Long targetId);
    
    List<TopicExperiment> getTopicExperimentListByDirectionId(Long topicDirectionId);
    
    List<TopicExperiment> getTopicExperimentList(Long targetId, Integer isCheck);

    List<TopicExperimentVo> getTopicExperimentVoList(Long targetId);

    int getCount(Long targetId, Integer isCheck, Integer isDelete);

    TopicExperiment insert(TopicExperiment topicExperiment);

    boolean updateById(TopicExperiment topicExperiment);

    void deleteById(TopicExperiment topicExperiment);

    TopicExperiment selectById(Long topicExperimentId);

    void recovery(Long topicExperimentId);

    TopicExperimentVo getTopicExperimentVo(Long topicExperimentId);

    /**
     * 实验指导列表
     *
     * @param experimentIds
     * @return
     */
    List<TopicExperimentVo> getExperimentGuideList(List<Long> experimentIds);

    void delete(Long topicDirectionId, Long topicTargetId);

    boolean hasPublishResult(Long topicExperimentId);

    List<TopicExperiment> getTopicExperimentList(List<Long> topicExperimentIds);

    int getCount(Long topicId);

    int getCountByLabId(Long labId);

    int getCountByLabMemberId(Long labId, Long labMemberId);

    List<TopicExperiment> getTopicExperimentByTargetGroupId(Long targetGroupId);

	List<TopicExperiment> getTopicExperimentList(Long targetId, Long methodTypeId);
	
	List<TopicExperiment> getAllTopicExperimentList(Long targetId);
}
